#pragma once

#include <Ogre.h>

#include "IntegrableInterface.h"
#include "Defs.h"
#include "Shape.h"

namespace PHYOgre
{

class StaticPlane : public IntegrableInterface
{
public:
	StaticPlane(Ogre::SceneNode *iSceneNode, Ogre::Entity *iEntity);

	//--------------------IntegrableInterface ---------------------------------
	
	void Integrate(const Real& iDt);
	void AddForce(const Vector3& iForce);
	bool HasFiniteMass()const;
	Real GetInverseMass()const;

	void SetShape(Shape* iShape);
	const Shape* GetShape() const;
	//----------MATERIAL PROPERTIES ------------
	void SetFriction(const Real& iFriction);
	void SetRestitution(const Real& iRestitution);

	Real GetRestitution() const;
	Real GetFriction() const;

	
private:
	
	//-------------- MATERIAL ---------------------
	Real mFriction;
	Real mRestitution;

	Shape *mShape;

	Ogre::SceneNode *mPlaneNode;
	Ogre::Entity *mPlaneEntity;

};

}